package com.hxexp.weixin.constant;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * HPE微信接口errcode常量
 *
 * @author li.jiang
 *
 */
public final class Errcode {
    /**
     * 成功
     */
    public static final int SUCCESS = 0;
    /**
     * 失败
     */
    public static final int FAIL = -1;
    /**
     * 用户名不存在
     */
    public static final int USERNAME_NOT_FOUND = 1;
    /**
     * 密码错误
     */
    public static final int PASSWORD_ERROR = 2;
    /**
     * 用户绑定关系已存在
     */
    public static final int USER_BIND_EXIST = 3;
    /**
     * 用户绑定关系不存在
     */
    public static final int USER_BIND_NOTEXIST = 4;
    /**
     * 用户名已存在
     */
    public static final int USERNAME_EXIST = 5;
    /**
     * 密码位数不足6位
     */
    public static final int PASSWORD_DIGIT_LT_SIX = 6;
    /**
     * 日期格式错误
     */
    public static final int DATEFORMAT_ERROR = 7;
    /**
     * 手机号无效
     */
    public static final int MOBILE_NUMBER_INVALID = 8;
    /**
     * 证件号已被使用
     */
    public static final int IDENTIFICATION_NUMBER_USED = 9;
    /**
     * 手机号已被使用
     */
    public static final int MOBILE_NUMBER_USED = 10;
    /**
     * 必填项未输入
     */
    public static final int REQUIRED_FIELD_NOT_INPUT = 11;
    /**
     * 验证码错误
     */
    public static final int CAPTCHA_ERROR = 12;
    /**
     * 重复退票
     */
    public static final int REFUND_REPEAT = 13;
    /**
     * 确认微信支付失败未出票
     */
    public static final int WEIXIN_PAY_FAIL_NOT_TICKET = 14;
    /**
     * 订单为不可支付的状态未出票
     */
    public static final int CANNOT_PAY_ORDER_NOT_TICKET = 15;
    /**
     * 其他错误
     */
    public static final int OTHER_ERROR = 16;
    /**
     * 验证码失效
     */
    public static final int CAPTCHA_INVALID = 17;
    /**
     * 服务器内部错误（当接口调用内部发生异常，返回此编码）
     */
    public static final int SERVER_INTERNAL_ERROR = 500;
    /**
     * 编码和名称的映射
     */
    private static final Map<Integer, String> CODE_NAME_MAP = new LinkedHashMap<Integer, String>(20);
    // 映射数据初始化
    static {
        CODE_NAME_MAP.put(SUCCESS, "成功");
        CODE_NAME_MAP.put(FAIL, "失败");
        CODE_NAME_MAP.put(USERNAME_NOT_FOUND, "用户名不存在");
        CODE_NAME_MAP.put(PASSWORD_ERROR, "密码错误");
        CODE_NAME_MAP.put(USER_BIND_EXIST, "用户绑定关系已存在");
        CODE_NAME_MAP.put(USER_BIND_NOTEXIST, "用户绑定关系不存在");
        CODE_NAME_MAP.put(USERNAME_EXIST, "用户名已存在");
        CODE_NAME_MAP.put(PASSWORD_DIGIT_LT_SIX, "密码位数不足6位");
        CODE_NAME_MAP.put(DATEFORMAT_ERROR, "日期格式错误");
        CODE_NAME_MAP.put(MOBILE_NUMBER_INVALID, "手机号无效");
        CODE_NAME_MAP.put(IDENTIFICATION_NUMBER_USED, "证件号已被使用");
        CODE_NAME_MAP.put(MOBILE_NUMBER_USED, "手机号已被使用");
        CODE_NAME_MAP.put(REQUIRED_FIELD_NOT_INPUT, "必填项未输入");
        CODE_NAME_MAP.put(CAPTCHA_ERROR, "验证码错误");
        CODE_NAME_MAP.put(REFUND_REPEAT, "重复退票");
        CODE_NAME_MAP.put(WEIXIN_PAY_FAIL_NOT_TICKET, "确认微信支付失败未出票");
        CODE_NAME_MAP.put(CANNOT_PAY_ORDER_NOT_TICKET, "订单为不可支付的状态未出票");
        CODE_NAME_MAP.put(OTHER_ERROR, "其他错误");
        CODE_NAME_MAP.put(SERVER_INTERNAL_ERROR, "服务器内部错误");
        CODE_NAME_MAP.put(CAPTCHA_INVALID, "验证码失效");
    }

    private Errcode() {
    }

    /**
     * 获取错误编码对应的消息
     *
     * @param code
     *            错误编码
     * @return 错误消息
     */
    public static String getMessage(Integer code) {
        return CODE_NAME_MAP.get(code);
    }
}
